home *** CD-ROM | disk | FTP | other *** search
-
- User Document for SpiroDraw04 94-05-25
-
- Lines marked with "|" are additions or changes in this document
- from the SpiroDraw03 documentation.
-
- I. What is this program and who wrote the thing?
- ------------------------------------------------
-
- SpiroDraw is a program that simulates the spiral drawing
- child's toy. It is almost as rewarding to watch the design being
- drawn by the computer as I remember it being to actually draw
- the design yourself, using the pins, and wheels and everything.
- It is certainly more accurate since the computer does not have
- to worry about holding all the wheels and guides perfectly still
- while winding the drawing wheel around inside or outside the
- guide wheel. If you have ever used this toy then I am sure
- you know what I mean!
-
- | This program is an update from Rev 03 (Left-Mouse-Button-Click has
- | been added for "user-break" of lengthy and "boring" designs). The
- | "CTRL-C" key combination was added in Rev 03 of the program. Also,
- | the little spinning "activity" animation in the center of the screen
- | has been replaced with a running "percent-done" in the upper left
- | corner of the drawing screen. A file extension of ".spd" is now
- | also automatically added to the filename upon a "Load" if it is
- | not specified by the user.
-
- | SpiroDraw04 has been compiled with ACE (c)David Benn
- | on an Amiga A2000HD (running OS 2.1).
-
- If you get any enjoyment or productive use from this program,
- | drop me a line. I'd like to hear from you (if you REALLY like
- | it, stick a little $ (how about $5.00 US) in the envelope - please!).
- | Thanks go to Bill Hagan who was the first send some $ my way.
- | He has restored my faith in the "shareware" concept!
-
- Charles E. Kenney, II
- 4 Burbank Circle
- Framingham, MA 01701
- USA
- phone: (508) 877-5959
- or: (508) 877-4771
-
- If you send me a disk and a stamped self-addressed disk mailer,
- I will also send you the latest version of 'SpiroDraw' and the
- source code along with any other little ditties I come up with.
-
- This program may be freely distributed as long as this document
- accompanies the program AND no more than a _small_ fee is charged
- for copying and or distribution.
-
- Thanks.
- -ck.
-
- P.S. Thanks again to David Benn for his wonderful compiler, "ACE".
-
-
- II. Program Set-up and Menu Descriptions
- ----------------------------------------
-
- | 'SpiroDraw' starts with 8 default settings (See "Last" gadget below)
- for SpiroDraw designs so you can see immediately what 'SpiroDraw'
- can do. Following are decriptions of the various menus and the
- resultant actions:
-
- The "Project" menu contains the "standard" Load and Save functions:
-
- | Load - The user may load data for a previously saved design.
- | Data files for SpiroDraw always have a ".spd" extension.
- | If the user does not include a ".spd" file extension,
- | 'SpiroDraw' adds it automatically.
- | The current data is "backed-up" before the data is
- | loaded (See "Last" gadget above).
-
- Save - The user may save data for a design if desired.
- | If the user does not include a ".spd" file extension,
- 'SpiroDraw' adds it automatically.
-
- Draw - Draws the SpiroDraw design for the data and other
- parameters currently in effect for 'SpiroDraw'.
- | The drawing of the design may be interrupted with the
- | famous 'CTRL-C' keys or by clicking the Left Mouse Button.
-
- | About - A little message about SpiroDraw and its author.
-
- Quit - Well... This is how to exit 'SpiroDraw'!
-
-
- The "Design" menu contains all the functions
- the user needs to set the design parameters:
-
- Set Data... - Invokes a screen which allows the user to specify
- the three "size" parameters for the SpiroDraw
- | design: Guide Ring, Drawing Wheel and Pen-Hole
- (see "A few words about 'SpiroDraw'" below for a
- description of these).
- | Clicking on the "In/Out" gadget cycles the placement
- | of the Drawing Wheel to inside-only, outside-only or
- | both on the Guide Ring.
- | Clicking on the "Last" gadget "recalls" the last
- | data from the "design buffer". The design buffer
- | is capable of holding 8 sets of design data -
- | (Guide Ring, Drawing Wheel and Pen-Hole parameters).
- | When the user clcks on this gadget, the previous
- | data in use before the current data is placed into
- | the current data and the other 7 sets of data are
- | "bubbled-up", with the current data being "sent down"
- | to the 8th set of data. Note that any time the user
- | modifies the current data by loading new data from
- | disk, by exiting the "Set Data..." window after
- | making changes, or by selecting the "Random" gadget,
- | (see below), the current data is "backed-up" to the
- | "1st" buffer, the "1st" to the "2nd", the "2nd" to
- | the "3rd", etc. The "8th" set of data simply gets
- | "pushed off the cliff" and is lost forever.
- | Clicking on the "Random" gadget randomizes the design
- | sizes for the Guide Ring, Drawing Wheel and Pen-hole.
- | The current data is "backed-up" before the data is
- | randomized (See "Last" gadget description above).
- | Clicking on the "Done" gadget exits this function
- | and the user is asked whether or not to draw the
- | new design using the new design parameters.
-
- Wheel Inside - If this Menu item does not have the "check-mark"
- then the "check-mark" is placed in the menu and
- 'SpiroDraw' will place the Drawing Wheel inside
- the Guide Ring for subsequent SpiroDraws.
- If this Menu item does have the "check-mark"
- then the "check-mark" is removed from the menu
- and 'SpiroDraw' will not place the Drawing Wheel
- inside the Guide Ring for subsequent SpiroDraws.
- 'SpiroDraw' will also automatically "check-mark"
- the "Wheel Outside" menu if the "Wheel Inside"
- menu is UN-check-marked.
-
- Wheel Outside - If this Menu item does not have the "check-mark"
- then the "check-mark" is placed in the menu and
- 'SpiroDraw' will place the Drawing Wheel outside
- the Guide Ring for subsequent SpiroDraws.
- If this Menu item does have the "check-mark"
- then the "check-mark" is removed from the menu
- and 'SpiroDraw' will not place the Drawing Wheel
- outside the Guide Ring for subsequent SpiroDraws.
- 'SpiroDraw' will also automatically "check-mark"
- the "Wheel Inside" menu if the "Wheel Outside"
- menu is UN-check-marked.
-
- Detail... - Invokes a window which allows the user to specify
- how detailed the drawn design will be. Clicking
- on the "Next" gadget cycles through all possible
- choices (each selection also causes 'SpiroDraw' to
- take progressively longer to draw the design):
-
- DOTTY - plots dots at visible intervals rather than
- drawing a continuous line while the design
- is being drawn (dots may be connected with
- a line between each dot - see the description
- for the "Connect Dots" menu item below).
-
- SKETCHY - plots dots at smaller intervals than "DOTTY"
-
- COARSE - plots dots at _really_ small intervals.
-
- FINE - plots dots so close together that they are
- a continuous line when 'SpiroDraw' draws.
-
- Connect Dots - The user may "check-mark" this menu item to connect
- the dots that are plotted by 'SpiroDraw' with a line
- to give the design a continuous-line appearance.
- This menu item is automatically disabled if the user
- selects "FINE" in the "Detail..." menu above since
- the design will already have a continous appearance.
-
- Clear Canvas - The user may "check-mark" this menu item to clear
- the drawing "canvas" before drawing each design.
- If this menu item is not "check-marked" then many
- designs can be drawn "on top of" each other.
-
- The "Preferences" menu contains the following functions:
-
- Ask Save - Any time data is changed in "SpiroDraw", the user is
- asked whether or not to save the "old" data if this
- menu item is "check-marked". "UN-check-marking"
- this menu item stops "SpiroDraw" from asking.
- It _can_ be annoying. "SpiroDraw" _always_ asks
- the user whether to save the new data (if it has
- been changed) when the "Quit" menu item is selected,
- regardless of the "check-mark" status of this menu item.
-
- | Show Activity - When this menu item is "check-marked", a running
- | '% completed' is displayed in the upper left corner
- | of the 'drawing window'. This is done to show that
- | "SpiroDraw" is "doing something" and to give the user
- | an idea of how long it will take to draw the design.
- | It is difficult to see the design actually being
- | drawn sometimes if the Pen-Hole value is very near
- | zero or if the sizes of the Guide Ring and the Drawing
- | Wheel are nearly equal. There are instances when the
- | "% completed" message would ruin the appearance of
- | the design so to avoid this, the user may elect to
- | "UN-check-mark" this "Show Activity" menu item.
-
- Visual Round
- Screen Round - This is a "cycling menu" function. Each time
- this menu item is selected the function is
- "swapped" to the other selection,
- "Visual Round" to "Screen Round" and vice versa.
-
- If the user selects "Visual Round", the design will be
- drawn with a perfectly circular appearance on the screen.
- If the user selects "Screen Round", the design will be
- drawn with a slightly oval appearance on the screen, but
- this is a useful selection if the design is "saved" as
- an IFF file (using a "screen-capture-to-IFF-file" program
- and then imported into a paint package capable of animation.
- Once this is done, the design can be rotated while still
- maintaining its "roundness". This has been used successfully
- with DPaint.
-
- Resolution... - Invokes a window which allows the user to specify
- different screen resolutions. Clicking on the
- "Next" gadget cycles through all possible choices:
-
- If the user selects "LOW" then 'SpiroDraw' will
- change to low resolution (320 x 200 screen).
- If the user selects "MEDIUM" then 'SpiroDraw' will
- change to medium resolution (640 x 200 screen).
- If the user selects "HIGH" then 'SpiroDraw' will
- change to high resolution (640 x 400 screen).
-
-
- III. A few words about 'SpiroDraw'
- --------------------------------------
-
- The Guide Ring was, for the child's toy, the plactic ring with
- "gearing" on each side that was so hard to hold perfectly in place
- on the paper while winding the Drawing Wheel around the inside or
- outside of the Guide Ring. Even pinning the Guide Ring down through
- the paper onto cardboard was never much help either! 'SpiroDraw'
- holds the Guide Ring in place quite nicely though. 'SpiroDraw'
- always places the Guide Ring in the center of the screen.
-
- The Drawing Wheel was, for the child's toy, the plastic "wheel"
- with "gearing" (to mesh with the Guide Ring) that was so hard to keep
- engaged to the gearing of the Guide Ring while winding the Drawing
- Wheel around the inside or outside of the Guide Ring. If you went
- too slowly you would sometimes get "stuck" due to the "cam" effect
- of the pen-hole in the Drawing Wheel that you had chosen, especially
- if you chose a pen-hole way out near the edge of the Drawing Wheel!
- If you went too fast the the gearing between the Drawing Wheel and
- the Guide Ring would slip or disengage altogether and you would draw
- a nice ugly, frantic and ruinous line across your design! This was
- REALLY frustrating, especially if you were "almost done"... and only
- 6 years old! 'SpiroDraw' will never know gear slips and getting
- stuck by the "cam" effect!
-
-
- The "Pen-Hole" was, for the child's toy, the little hole in the
- Drawing Wheel (there were lots of these little holes in each wheel)
- that you would put your pen into which would determine the "character"
- of the design - the holes closest to the center of the Drawing Wheel
- would produce "circular" designs (for 'SpiroDraw', small values for
- the Pen-hole distance from the center of the Drawing Wheel), and the
- holes closest to the edges of the Drawing Wheel would produce very
- "spirally" designs (for 'SpiroDraw', large values for the Pen-hole
- distance from the center of the Drawing Wheel). Note that 'SpiroDraw'
- allows a distance for the Pen-hole which is larger than the radius of
- the Drawing Wheel but only within practical limits depending upon whether
- the 'current' sceen resolution is LOW, MEDIUM or HIGH. You may go ahead
- and TRY putting a pen into a hole on the Drawing Wheel that is larger
- than the Drawing Wheel itself using the child's toy!
-
- IV. A "useful" way to use this program
- (depending on your definition of "useful")
- -----------------------------------------------
-
- Here is a neat little tidbit for using this program with a
- Paint package (if you would like to play with or animate any of
- your designs that you generate with this program):
-
- For DPaint, anyway, this works nicely...
-
- 1. Start up a "screen-saver" program "in the background"
- which is capable of saving a screen as an IFF file.
- I have used "PictSaver" by Preben Nielsen successfully.
-
- 2. Generate your design using the "screen" roundness
- choice during the "user input" routine. This choice
- is known to work for DPaint.
-
- 3. Once the design has finished being generated, execute
- whatever key sequence is required by the "screen saver"
- program you have and save the design as an IFF file.
-
- 4. Call up your Paint package and do whatever. I have
- had fun "rolling" my designs across the screen or
- "into the distance" or even using the design as a
- circular border for other brushes, etc. Be creative!
-
-
- The following history also appears verbatim as a comment
- at the top of the source program since virtually any significant
- change to the source will result in a significant change to the
- documentation and vice versa. Also, if you have this user doc
- and not the source, you can see any revision information and
- when it is/was implemented.
-
- Note that as of the first writing of this document
- (for SpiroDraw01), 94-02-17, this little program was
- only 3 days shy of its 10th birthday!
-
- Great advertising hook - "A DECADE IN THE MAKING!"
-
- PROGRAM REVISION HISTORY (in reverse chronological order)
- ----------------------------------------------------------------
- Added the option to Save the screen as an IFF file
- (if this capability is added to ACE) NOT YET!
- | Uploaded to AMINET as SpiroDraw04 94-05-25
- | Fixed HIGH to LOW/MEDIUM Drawing Wheel size scaling bug 94-05-25
- | Cleaned up tracking of changed data and backup buffers 94-05-24
- | Added "About" MENU item 94-05-24
- | Squished Gadgets closer together in HIGH Resolution
- | "Set Data" window 94-05-24
- | Increased width of slider gadgets for HIGH resolution 94-05-24
- | Moved "Random", "Last" from MENUs to "Set Data" window
- | and re-positioned other GADGETS to accommodate them 94-05-23
- | Changed window title from
- | "Screen Res" to "Sreen Resolution" 94-05-23
- | Added " " between SpiroDraw and Data in Set Data window 94-05-23
- | Moved "Set Detail" and "Screen Resolution" windows
- | down 5 pixels 94-05-23
- | Automatically add ".spd" to end of user load data file
- | name if not specified by the user. 94-05-23
- | Added Left-Mouse-Button-Click to interrupt design-draw 94-05-23
- | Removed the cute spinning anim and replaced with % done 94-05-23
- | Fixed a 'bug'. GADGETS were getting messed up with
- | DIM g_msg$(8) SIZE 4
- | changed to DIM g_msg$(8) 94-05-23
- Uploaded to AMINET as SpiroDraw03 94-05-20
- Finished debugging user break capability 95-05-18
- Compiled using latest version of ACE which fixed a bug 94-05-15
- Began debugging user-break capability 94-05-11
- Received first shareware $ from W. Hagan (thanks Bill!) 94-05-12
- Added ^C user-break capability to spiro_draw subroutine 94-05-11
- Added Declarations of variables 94-04-30
- Uploaded to AMINET as SpiroDraw02 94-03-13
- Rewrite Documentation for Menus and new features 94-03-13
- All the new stuff 94-03-13
- Added more robust file-handling 94-03-11
- Added more pretty-up code 94-03-11
- Added switches to ask to save data every time
- data is changed or to not ask and whether to show
- the little activity loop while design is drawn 94-03-11
- Added activity loop while design is being drawn 94-03-11
- Added memory buffer for 8 designs 94-03-11
- Added some more error handling and pretty-up code 94-03-10
- Added RANDOMIZATION of design parameters 94-03-09
- Debugged more GADGET code 94-03-09
- More GADGET coding 94-03-09
- Debugged new gadget code 94-03-08
- Coded "design size" parameters using GADGETs 94-03-08
- Coded "resolution" parameter using GADGETs 94-03-07
- Coded "detail" parameter using GADGETs 94-03-07
- Ask the user to draw immediately upon reading a .spd 94-03-07
- Added more robust File I/O error handling...
- ... could still use more 94-03-07
- Ability to choose (and now change) SCREEN resolution
- "pulled" into the main program 94-03-06
- MENU and code to Save/Load design parameters 94-03-04
- Added Dummy MENUs for Load and Save 94-03-04
- Added additional design types skeleton code and menus 94-03-04
- Replaced "hack" user inputs with MENU constructs
- This would enable the user to set up all the
- "design" parameters and change only those
- parameters desired while maintaining all the
- others (user doc changed too) 94-03-03
- UPLOADED to Aminet as SpiroDraw01 94-02-25
- Cleaned-up the plot loop, eliminated some "goto"s 94-02-21
- Cleaned up screen and window sizes, user input text 94-02-20
- Fixed new "revolutions" bugs (variable rvlv)
- introduced while cleaning-up the code 94-02-19
- Program now runs from WorkBench 94-02-17
- The user is now asked for "Pen-hole distance"
- before being asked "inside, outside, or both"
- This order seemed to be more logical after
- writing the documentation 94-02-17
- Finally wrote the documentation 94-02-17
- More refinement of programming constructs 94-02-16
- Refinement of programming constructs 94-02-15
- Revived from my AmigaBasic hacks and converted
- to ACE (great package, David Benn!) 94-02-14
- Converted from C-64 SIMON'S BASIC to AmigaBasic 87-11-20
- Program initiated and hacked into working order
- using SIMON'S BASIC for the Commodore 64 (tm) 84-02-20
-